package cn.mujiankeji.mbrowser.界面.组件

import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.BoxWithConstraints
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalConfiguration
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp

@Composable
fun <T> 自适应宫格列表(项目宽度 : Dp,
                       列表: List<T>,
                       实现 : @Composable (T) -> Unit){
    BoxWithConstraints(Modifier.fillMaxWidth()) {
        自适应宫格列表(maxWidth,项目宽度, 列表, 实现)
    }
}

@Composable
fun <T> 自适应宫格列表(视图宽度 : Dp,项目宽度: Dp,
                       列表: List<T>,
                       实现 : @Composable (T) -> Unit ){
    // 计算一下，确保对症 ~ 自适应
    val 列数 = (视图宽度 / 项目宽度).toInt() //
    val 列间隔 = (视图宽度 - (项目宽度 * 列数)) / (列数 - 1) // 行间隔
    Column(Modifier.fillMaxWidth().padding(top = 10.dp)){
        列表.chunked(列数.toInt()).forEach { rows->
            Row(Modifier.padding(vertical = 3.dp)){
                rows.forEachIndexed { index, item ->
                    if (index > 0) Spacer(Modifier.width(列间隔)) // 有前才需要加间隔呀
                    Box(Modifier.width(项目宽度)){
                        实现(item)
                    }
                }
            }

        }
    }
}